<?php

class Acl_Mysql_Connect
{
	private $database;
	protected $cnx;
	static private $instance;
	
	private function __construct($database)
	{
		$this->database=$database;
		$this->cnx=$this->connectDB();
		$this->selectDB();
	}
	
	public static function getInstance($database)
	{
		if(!self::$instance)			
			self::$instance = new Acl_Mysql_Connect($database);
		
		return self::$instance;			
	}
	
	private function connectDB()
	{
		$conexion=mysql_pconnect($this->database['server'],
								$this->database['user'],
								$this->database["password"])
			or die ('no se puede conectar a la base de datos');
		return $conexion;
	}
	private function selectDB()
	{
		mysql_select_db($this->database['db'])
			or die ('no se puede seleccionar la base de datos');
	}
	
	protected function queryDB($sql)
	{
		$consulta = mysql_query($sql,$this->cnx) 
			or die("error en la consulta <br/><br/>".$sql." = <br/><br/>".mysql_error());
		return $consulta;
	}
	/**
	 * convierte el resultado de un query en array
	 * @param resultado de query
	 * @return array asoc con el resultado
	 */
	protected function fetchResult($data)
	{
		$result=array();
		while($f=mysql_fetch_assoc($data))
		{
	//		print_r($f);
			$result[]=$f;
		}
		return $result;
	}
	
	public function fetchArray($sql)
	{
		$data=$this->queryDB($sql);
		$array=$this->fetchResult($data);	
			
		return $array;		
	}
	
	public function fetchOneArray($sql)
	{
		$data=$this->queryDB($sql);
		$array=$this->fetchResult($data);	
		
		if($array)
			return $array[0];
		else
			return FALSE;		
	}
	
	public function execute($sql)
	{
		$data=$this->queryDB($sql);
		return $this->numRows($data);
	}
	
	protected function numRows($recordset)
	{
		if($recordset)
			return mysql_num_rows($recordset);
		else
			return FALSE;
	}
	
}